package com.skyworthclub.competition.service;

import com.skyworthclub.competition.beans.Match;
import org.springframework.data.domain.Page;
import org.springframework.transaction.annotation.Transactional;

/**
 * @author li
 * @version 1.0
 * @since 18-10-20 下午3:32
 **/
@Transactional(rollbackFor = Exception.class)
public interface MatchElasticsearchService {

    /**
     * 添加文档
     *
     * @param match 比赛实例对象
     */
    void save(Match match);

    /**
     * 删除文档
     *
     * @param matchId 比赛id
     */
    void delete(Integer matchId);

    /**
     * 更新文档
     *
     * @param match 需要更新的对象
     */
    void update(Match match);

    /**
     * 单字段查询
     *
     * @param keyword 关键词
     * @param field   搜索字段
     * @param page    页码
     */
    Page<Match> matchQuery(String keyword, String field, Integer page);

    /**
     * 多字段分页复合查询
     *
     * @param keyword 关键词
     * @param page    页码
     * @param fields  搜索的字段
     * @return page
     */
    Page<Match> multiMatchQuery(String keyword, Integer page, String[]fields);


    /** 多字段不分页复合查询
     * @param keyword   关键字
     * @param fields    搜索的字段
     * @return  iterable
     */
    Iterable<Match> multiMatchQuery(String keyword, String[] fields);

}
